vimfandomcom-20200223-history
Fix arrow keys that display A B C D on remote shell
I wonder how many of you are annoyed with the arrow key behavior during insert mode in Vim. Leave all the key mappings default, do not change your TERM environment. Here's a simple tip, :set term=cons25 It was tested with Vim 5.8 and 6.1 editions on; FreeBSD 4.X-STABLE; xterm(-color),VT100 remote terminals; (t)csh shells. Comments This doesn't really work very well for me on SunOS -- I have the same problem but :set term=cons25 just gives me OC everywhere before each character until I redraw. Weird. But, :set term=ansi works great, and the arrow keys work. A better solution is to, while in vi, type in insert mode ctrl-vup and see what you get. Then, in your .vimrc, add the lines set t_ku=ctrl-vescOA # or whatever you saw so it ends up looking something like set t_ku=^set t_kd=^[OB set t_kr=^[OC set t_kl=^[OD (though you want REAL escape chars instead of ^[.) ---- And in addition, set term=ansi makes syntax color off in vim (afair FreeBSD with color xterm). ---- So are we to be left with no good freebsd / bash solution? set t_ku=^[OA set t_kd=^[OB set t_kr=^[OC set t_kl=^[OD did nothing for me... and the no environment option is not a good one. I have looked everywhere for the answer and found nothing... btw set mouse=a at least allows me to move in insert mode. ---- I had the same problem a few days ago. I figured out that i didnt have the ~.vimrc file. So, i went to /usr/local/share/vim/vim58 and copied the vimrc_example.vim to ~.vimrc. Problem solved! ---- I can confirm that the arrow-key problem (under freebsd) disappeared as soon as I introduced .vimrc ---- The :set nocompatible method I *think* solves the arrow keys. It is in the default vimrc_example.vim. So copying that to ~/.vimrc should solve your problem as others have noted. ---- Works even for Linux - VI's arrow key problem in insert mode disappears when we copy the example vim file (in vim version7 the file is - vimrc_example.vim) as .vimrc in the home directory. I wish this solution got mentioned at the top of this page, saves time. ---- The reason why copying the default .vimrc file works is because it issues a set nocompatible ... just read the default vimrc file and things start to work much better :) ---- Do this: $ vim ~/.vimrc set t_ku= (now type Ctrl-V and press cursor up) set t_kd= (now type Ctrl-V and press cursor down) set t_kr= (now type Ctrl-V and press cursor right) set t_kr= (now type Ctrl-V and press cursor left) You should get something that looks like set t_ku=^[OA set t_kd=^[OB set t_kr=^[OC set t_kl=^[OD but the ^[ is actually a single escape character. That certainly works for me here (FreeBSD 6.1, ssh in from Mac OS) ---- It also appears that it must be started as "vim" rather than "vi" in order to read the .vimrc file. I've added an alias to my bashrc scripts to take care of this... "alias vi=vim" ---- If you are using vi instead of vim, you need to update the above commands in .exrc file instead of .vimrc. Since alias makes you to work in vim, even you type vi. ---- "So, i went to /usr/local/share/vim/vim58 and copied the vimrc_example.vim to ~.vimrc. Problem solved!" Slightly different path for me, but confirmed it works on sunOS 10, also fixed my backspace issue, setup the colors, and search highlights. ---- I have a similar problem but slightly different. After a very recent update of my system including vim71 the left and right arrow keys started to play up. They both moved left and right respectively, but only by word increments! This was OK in command mode, but horrible for the EX command mode! Setting ":set term=builtin_ansi" fixed the problem, so I knew it was a terminal problem. Looking further ":set t_kl" reporting the weird string "^[O*D" Setting this to "^[[D" or "^[OD" has no effect on the arrow keys actions, it remains jumping by word. Only setting "term=ansi" seems to help. But destroys use of function keys, and the alternate editing screen (preserving normal command line output display, when not editing). So I am stuck with 'word jumping arrow keys'. :Thanassis: I had the same problem, but solved it in a better way by "se term=linux" in my .vimrc. That way, I don't lose my syntax highlighting, function keys, etc, and still managed to stop the "word jumping" arrow keys. :Hi Anthony. I've removed your email address because we don't want to encourage spammers to try harvesting here, and we don't want to encourage users to ask for help (this site is for tips). I'm sure you would get a good response on the vim_use mailing list. True, you have to join, and you might want to unsubscribe later. However, both of those are very easy. Your first post on vim_use will be moderated (delayed). When you post, mention what system you're using. Say what you did (updated what?), and what the result was. I hope you get the problem fixed, and (if it's at all related to this tip), please return and update the tip. :The text below has a link to info on vim_use, and will remind us to remove this later. --[[User:JohnBeckett|JohnBeckett] 06:40, 5 February 2009 (UTC) :We don't encourage questions about using Vim on the wiki because they distract from the work of improving the tip collection. Of course, feel free to comment if you have questions about or see deficiencies in a tip, but please see [[Vim_Tips_Wiki:Community_Portal#Asking_questions|'how to ask questions']] for issues regarding Vim itself. This comment was added on 2009-02-05 and will be removed after a week. ---- After experiencing this issue on FreeBSD 6 and 7 I found the clue as to why arrow keys would display A B C D when in insert mode - buried within :help nocompatible is this nugget: :::By default this option is on and the Vi defaults are used for the :::options. This default was chosen for those people who want to use Vim :::just like Vi, and don't even (want to) know about the 'compatible' :::option. :::When a |vimrc| or |gvimrc| file is found while Vim is starting up, :::this option is switched off, and all options that have not been :::modified will be set to the Vim defaults. Effectively, this means :::that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim :::defaults, otherwise it will use the Vi defaults. So rather than mucking around with termcap settings create an empty .vimrc file first and see if the issue is resolved. If not, try the termcap suggestions. Hope this helps. Category:Temporary